package java9;

import java.util.Optional;
import java.util.stream.Stream;

public class EnhancedStreamTest {
    public static void main(String[] args) {
        Stream.of("A", "BB", "C", "D","BC","D")
                .filter(s -> s.startsWith("B"))
                .distinct()
                .forEach(System.out::println);


        Stream.ofNullable(null)
                .forEach(System.out::println);

        Stream.iterate(0, i -> i + 1)   //如果不加limit()进行限制的话，将无限生成下去。
                .limit(20)   //限制生成20个
                .forEach(System.out::println);

        Stream.iterate(0, i -> i + 1)
                .limit(20)
                .takeWhile(i -> i < 10)   //当i一旦大于等于10直接截断
                .forEach(System.out::println);

        Stream.iterate(0, i -> i + 1)
                .limit(20)
                .dropWhile(i -> i < 10)   //截断状态，只有当满足条件时再开始通过
                .forEach(System.out::println);

        String str = null;
        Optional.ofNullable(str).ifPresentOrElse(s -> {  //通过使用ifPresentOrElse，我们同时处理两种情况
            System.out.println("被包装的元素为："+s);     //第一种情况和ifPresent是一样的
        }, () -> {
            System.out.println("被包装的元素为null");   //第二种情况是如果为null的情况
        });
    }
}
